home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / site-packages / gtk-2.0 / gtk / compat.py < prev    next >
Text File  |  2006-01-20  |  3KB  |  73 lines

  1. # -*- Mode: Python; py-indent-offset: 4 -*-
  2. # pygtk - Python bindings for the GTK+ widget set.
  3. # Copyright (C) 1998-2003  James Henstridge
  4. #
  5. #   gtk/compat.py: half arsed compatibility code.
  6. #
  7. # This library is free software; you can redistribute it and/or
  8. # modify it under the terms of the GNU Lesser General Public
  9. # License as published by the Free Software Foundation; either
  10. # version 2.1 of the License, or (at your option) any later version.
  11. #                                                                             
  12. # This library is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15. # Lesser General Public License for more details.
  16. #                                                                             
  17. # You should have received a copy of the GNU Lesser General Public
  18. # License along with this library; if not, write to the Free Software
  19. # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
  20. # USA
  21.  
  22. __all__ = ['GTK', 'GDK', 'gtk']
  23.  
  24. from types import ModuleType as module
  25.  
  26. def _find_mod(modname):
  27.     d = {}
  28.     exec 'import %s; mod = %s' % (modname, modname) in d
  29.     return d['mod']
  30.  
  31. class RemapModule(module):
  32.     def __init__(self, name, modulenames):
  33.         module.__init__(self)
  34.         self.__name__ = name
  35.         if isinstance(modulenames, str):
  36.             modulenames = [modulenames]
  37.         self.__modulenames = modulenames
  38.         self.__modules = None
  39.     def __getattr__(self, attr):
  40.         if not self.__modules:
  41.             self.__modules = map(_find_mod, self.__modulenames)
  42.         for mod in self.__modules:
  43.             try:
  44.                 value = getattr(mod, attr)
  45.                 setattr(self, attr, value)
  46.                 return value
  47.             except AttributeError:
  48.                 pass
  49.         raise AttributeError("module has no attribute '%s'" % attr)
  50.  
  51. GTK = RemapModule('GTK', 'gtk')
  52. GDK = RemapModule('GDK', ['gtk.gdk', 'gtk.keysyms'])
  53.  
  54. class gtkModule(RemapModule):
  55.     def __init__(self):
  56.         RemapModule('gtk', ['gtk', 'gtk.gdk'])
  57.         self.__name__ = 'gtk'
  58.     def __getattr__(self, attr):
  59.         if attr[:3] == 'Gtk':
  60.             value = getattr(_find_mod('gtk'), attr[3:])
  61.             setattr(self, attr, value)
  62.             return value
  63.         elif attr[:3] == 'Gdk':
  64.             value = getattr(_find_mod('gtk.gdk'), attr[3:])
  65.             setattr(self, attr, value)
  66.             return value
  67.         else:
  68.             return RemapModule.__getattr__(self, attr)
  69.  
  70. gtk = gtkModule()
  71.  
  72. del RemapModule, gtkModule
  73.